全部文档

10.1场景联动规则管理

提供在云端上新建规则、根据ID查询规则详情、编辑规则、根据ID删除规则的、对规则的分页带条件查询、启用/禁用规则、根据ID列表批量删除规则、批量启用/禁用规则的功能

10.1.1新建规则

功能描述:提供新建规则的功能,入参为规则具体内容,返回新增结果。

POST  /api/v1/rules

Body:

Name Type Description Required
name string 规则名 Yes
conditions struct[] 触发器结构体数组 No (conditions和timeTrigger中至少必填一个)
timeTrigger string 时间触发器 支持cron表达式(0 0 3,18 ? ) No (trigger和timeTrigger中至少必填一个)
filters struct[] 过滤条件 No
actions struct[] 执行设备信息结构体数组 No (actions、subscription、ExportClientId、nextRuleId中至少必填一个)
subscription string[] 接收人邮箱列表 No (actions、subscription、exportClientId、nextRuleId中至少必填一个)
exportClientId int 消息路由客户端ID No (actions、subscription、exportClientId、nextRuleId中至少必填一个)
nextRuleId string 下一个要执行的规则Id No (actions、subscription、exportClientId、nextRuleId中至少必填一个)
nextRuleName string 下一个要执行的规则名称 No
mailServerId string 邮箱服务器的ID (5d142946688d5c0006ecb92e) No
mailPatternId string 邮件模板的ID (5d142946688d5c0006ecb92e) No
ruleType int 规则类型,1-云端 Yes

conditions的子对象结构体:

Name Type Description Required
type int 条件类型(1:数据点条件 2:设备上线 3:设备下线 4:设备删除) No(默认是1)
productId int 触发产品ID Yes
didList int[] 触发设备ID,空数组则代表该产品下的所有设备 No(didList和labelId二者传其一)
parameter string 触发设备属性名(定义功能时添加的属性名) No(type=1时必填)
operation string 触发设备判定符号(目前支持:> ; >= ; == ; < ; <= ; !=)(注:string,bool,byte只支持 == 与 != ) No(type=1时必填)
operand 功能属性值类型 阈值(bool值写成true或者false,int写成数字) No(type=1时必填)
labelId int 分组ID,对该分组下的所有设备生效 No(didList和labelId二者传其一)

filter的子对象结构体:

Name Type Description Required
type int 过滤类型(1:条件过滤;2:时间过滤) Yes
filterDevice struct 条件过滤 No(type为1时必填)
filterTime struct 时间过滤 No(type为2时必填)

filterDevice的子对象结构体:

Name Type Description Required
productId int 触发产品ID Yes
deviceId int 触发设备ID Yes
parameter string 触发设备属性名(定义功能时添加的属性名) Yes
operation string 触发设备判定符号(目前支持:> ; >= ; == ; < ; <= ; !=)(注:string,bool,byte只支持 == 与 != ) Yes
operand 功能属性值类型 阈值(bool值写成true或者false,int写成数字) Yes

filterTime的子对象结构体:

Name Type Description Required
start string 开始时间(时:分 12:00) Yes
end string 结束时间(时:分 12:00) Yes

actions的子对象结构体:

Name Type Description Required
productId int 执行产品ID Yes
deviceId int 执行设备ID Yes
identifier string 需执行的属性名(具有写权限的属性) Yes
value 任意类型 值(bool值写成true或者false,int写成数字) Yes

Body example:

Body中含有actions和conditions的情况:
{
  "actions": [
    {
      "deviceId": 10000781,      
      "identifier": "abcd",
      "productId": 100235,    
      "value": "true"
    }
  ],
  "conditions": [
    {
      "didList": [
        10000781
      ],
      "operand": "true",
      "operation": "!=",
      "parameter": "abcd",
      "productId": 100235,
      "type": 2
    }
  ],
  "name": "string",
  "ruleType": 1
}

Body中含有timeTrigger和actions的情况:
{
  "timeTrigger": "0 0 3,18 * * ?",
  "actions": [
      {
        "deviceId": 10000781,      
        "identifier": "abcd",
        "productId": 100235,    
        "value": "true"
      }
    ],  
  "name": "strrringw2111",
  "ruleType": 1
}

Body中含有exportClientId和conditions的情况:
{
  "exportClientId": 10267,
  "conditions": [
      {
        "didList": [
          10000781
        ],
        "operand": "true",
        "operation": "!=",
        "parameter": "abcd",
        "productId": 100235,
        "type": 2
      }
    ],
  "name": "strrringw2f111",
  "ruleType": 1
}

Body中含有timeTrigger和subscription的情况:
{
  "timeTrigger": "0 0 3,18 * * ?",
  "subscription": ["1980361262@qq.com"],  
  "name": "strrringw2111",
  "ruleType": 1
}

cURL example:

Body中含有actions和conditions的情况:
   curl --location --request POST '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/rules?accessKeyId={accessKeyId}&signature={signature}&signatureNonce=646' \
 --header 'platform: 1' \
 --header 'projectId: {projectId}' \
 --header 'Content-Type: application/json' \
 --data-raw '{
   "actions": [
     {
       "deviceId": 10000781,
       "identifier": "abcd",
       "productId": 100235,
       "value": "true"
     }
   ],
   "conditions": [
     {
       "didList": [
         10000781
       ],
       "operand": "true",
       "operation": "!=",
       "parameter": "abcd",
       "productId": 100235,
       "type": 2
     }
   ],
   "name": "string11",
   "ruleType": 1
 }'

Body中含有timeTrigger和actions的情况:
curl --location --request POST '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/rules?accessKeyId={accessKeyId}&signature={signature}&signatureNonce=646' \
 --header 'platform: 1' \
 --header 'projectId: {projectId}' \
 --header 'Content-Type: application/json' \
 --data-raw '{
               "timeTrigger": "0 0 3,18 * * ?",
               "actions": [
                   {
                     "deviceId": 10000781,      
                     "identifier": "abcd",
                     "productId": 100235,    
                     "value": "true"
                   }
                 ],  
               "name": "strrringw2111",
               "ruleType": 1
             }'

Body中含有exportClientId和conditions的情况:
curl --location --request POST '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/rules?accessKeyId={accessKeyId}&signature={signature}&signatureNonce=646' \
 --header 'platform: 1' \
 --header 'projectId: {projectId}' \
 --header 'Content-Type: application/json' \
 --data-raw '{
               "exportClientId": 10267,
               "conditions": [
                   {
                     "didList": [
                       10000781
                     ],
                     "operand": "true",
                     "operation": "!=",
                     "parameter": "abcd",
                     "productId": 100235,
                     "type": 2
                   }
                 ],
               "name": "strrringw2f111",
               "ruleType": 1
             }'

Body中含有timeTrigger和subscription的情况:
curl --location --request POST '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/rules?accessKeyId={accessKeyId}&signature={signature}&signatureNonce=646' \
 --header 'platform: 1' \
 --header 'projectId: {projectId}' \
 --header 'Content-Type: application/json' \
 --data-raw '{
               "timeTrigger": "0 0 3,18 * * ?",
               "subscription": ["1980361262@qq.com"],  
               "name": "strrringw2111",
               "ruleType": 1
             }'

Response:

Name Type Description
data int 新建的规则ID

Response example:

{
    "success": true,
    "code": 0,
    "msg": null,
    "data": "8ae491be7096bd2301709a46d7170009"
}

10.1.2获取详细规则信息

功能描述:提供根据id查询规则详情的功能,返回规则详情。

GET  /api/v1/rules/{ruleId}

Path:

Name Type Description Required
ruleId string 规则的ID Yes

cURL example:

   curl --location --request GET '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/rules/{ruleId}?accessKeyId={accessKeyId}&signature={signature}&signatureNonce=646' \
--header 'projectId: {projectId}' \ 
--header 'platform: 1'

Response data:

Name Type Description
id string 规则ID
name string 规则名称
userId string 用户ID
userName string 用户名称
timeTrigger string 时间触发器,支持cron表达式
conditions struct[] 触发器结构体数组
actions struct[] 执行设备信息结构体数组
subscription string[] 接收人邮箱列表
mailServerId string 邮箱服务器ID
mailServerName string 邮箱服务器名称
mailPatternId string 邮件模板ID
mailPatternName string 邮件模板名称
export boolean 是否推送到export client
exportClientId int 消息路由客户端ID
ruleType int 规则类型,1-云端
status enum 规则状态(0:禁用,1:启用)

Response data conditions的子对象结构体:

Name Type Description
type int 条件类型(1:数据点条件 2:设备上线 3:设备下线 4:设备删除)
productId int 触发产品ID
didList int[] 触发设备ID列表
productName string 触发产品名称
nameList string[] 触发设备名称列表
protocolType int 协议类型
check struct 触发器详情
labelId int 分组ID
labelName string 分组名

Response data check的子对象结构体:

Name Type Description
parameter string 触发设备属性名(定义功能时添加的属性名)
operation string 触发设备判定符号(目前支持:> ; >= ; == ; < ; <= ; !=)(注:string,bool,byte只支持 == 与 != )
operand 任意类型 阈值(bool值写成true或者false,int写成数字)
type int 条件类型(1:数据点条件 2:设备上线 3:设备下线 4:设备删除)

Response data actions的子对象结构体:

Name Type Description
productId int 执行产品ID
deviceId int 执行设备ID
identifier string 需执行的属性名(具有写权限的属性)
value 任意类型 值(bool值写成true或者false,int写成数字)
type int 条件类型(1:数据点条件 2:设备上线 3:设备下线 4:设备删除)
protocolType int 协议类型
deviceName string 执行设备名称
productName string 执行产品名称

Response example:

{
  "success": true,
  "code": 0,
  "msg": null,
  "data": {
            "id": "8ae48daf7163309a0171ee0575150010",
            "name": "string111",
            "userId": "1bb9909ee93647df883b9043743a345d",
            "userName": "liubo3",
            "timeTrigger": null,
            "conditions": [
                {
                    "productName": "cdedd",
                    "productId": 100235,
                    "protocolType": 5,
                    "labelId": null,
                    "labelName": null,
                    "check": {
                        "parameter": "abcd",
                        "operation": "!=",
                        "operand": "true",
                        "type": 2
                    },
                    "type": 2,
                    "nameList": [
                        "crcr"
                    ],
                    "didList": [
                        10000781
                    ]
                }
            ],
            "filters": [],
            "actions": [
                {
                    "deviceId": 10000781,
                    "deviceName": "crcr",
                    "productName": "cdedd",
                    "productId": 100235,
                    "protocolType": 5,
                    "identifier": "abcd",
                    "value": "true",
                    "type": 2
                }
            ],        
            "subscription": [],
            "mailServerId": "",
            "mailServerName": "",
            "mailPatternId": "",
            "mailPatternName": "",           
            "export": false,
            "exportClientId": null,           
            "ruleType": 1,
            "status": "DISABLED"
  }
}

10.1.3更新规则

功能描述:更新规则的功能,入参为规则具体内容。

PUT  /api/v1/rules/{ruleId}

Path:

Name Type Description Required
ruleId string 规则的ID Yes

Body:

Name Type Description Required
name string 规则名 No
conditions struct[] 触发器结构体数组 No
timeTrigger string 时间触发器 支持cron表达式(0 0 3,18 ? ) No
filters struct[] 过滤条件 No
actions struct[] 执行设备信息结构体数组 No
subscription string[] 接收人邮箱列表 No
exportClientId int 消息路由客户端ID No
mailServerId string 邮箱服务器的ID (5d142946688d5c0006ecb92e) No
mailPatternId string 邮件模板的ID (5d142946688d5c0006ecb92e) No

conditions的子对象结构体:

Name Type Description Required
type int 条件类型(1:数据点条件 2:设备上线 3:设备下线 4:设备删除) No(默认是1)
productId int 触发产品ID Yes
didList int[] 触发设备ID,空数组则代表该产品下的所有设备 No(didList和labelId二者传其一)
parameter string 触发设备属性名(定义功能时添加的属性名) No(type=1时必填)
operation string 触发设备判定符号(目前支持:> ; >= ; == ; < ; <= ; !=)(注:string,bool,byte只支持 == 与 != ) No(type=1时必填)
operand 功能属性值类型 阈值(bool值写成true或者false,int写成数字) No(type=1时必填)
labelId int 分组ID No(didList和labelId二者传其一)

filter的子对象结构体:

Name Type Description Required
type int 过滤类型(1:条件过滤;2:时间过滤) Yes
filterDevice struct 条件过滤 No(type为1时必填)
filterTime struct 时间过滤 No(type为2时必填)

filterDevice的子对象结构体:

Name Type Description Required
productId int 触发产品ID Yes
deviceId int 触发设备ID Yes
parameter string 触发设备属性名(定义功能时添加的属性名) Yes
operation string 触发设备判定符号(目前支持:> ; >= ; == ; < ; <= ; !=)(注:string,bool,byte只支持 == 与 != ) Yes
operand 功能属性值类型 阈值(bool值写成true或者false,int写成数字) Yes

filterTime的子对象结构体:

Name Type Description Required
start string 开始时间(时:分 12:00) Yes
end string 结束时间(时:分 12:00) Yes

actions的子对象结构体:

Name Type Description Required
productId int 执行产品ID Yes
deviceId int 执行设备ID Yes
identifier string 需执行的属性名(具有写权限的属性) Yes
value 任意类型 值(bool值写成true或者false,int写成数字) Yes

Body example:

{
  "actions": [
    {
      "deviceId": 10000781,
      "identifier": "abcd",
      "productId": 100235,
      "value": "true"
    }
  ],
  "conditions": [
    {
      "didList": [
        10000781
      ],
      "operand": "true",
      "operation": "==",
      "parameter": "abcd",
      "productId": 100235,
      "type": 2
    }
  ],
  "name": "string111",
  "ruleType": 1
}

cURL example:

   curl --location --request PUT '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/rules/{ruleId}?accessKeyId={accessKeyId}&signature={signature}&signatureNonce=646' \
 --header 'platform: 1' \
 --header 'projectId: {projectId}' \
 --header 'Content-Type: application/json' \
 --data-raw '{
  "actions": [
    {
      "deviceId": 10000781,
      "identifier": "abcd",
      "productId": 100235,
      "value": "true"
    }
  ],
  "conditions": [
    {
      "didList": [
        10000781
      ],
      "operand": "true",
      "operation": "==",
      "parameter": "abcd",
      "productId": 100235,
      "type": 2
    }
  ],
  "name": "string111",
  "ruleType": 1
}'

Response example:

{    
    "success": true,
    "code": 0,
    "msg": null,
    "data": null
}

10.1.4通过id删除规则

功能描述:提供根据id删除规则的功能,返回删除结果。

DELETE  /api/v1/rules/{ruleId}

Path:

Name Type Description Required
ruleId string 规则的ID Yes

Query:

Name Description Required Type marks
accessKeyId 用户访问服务所用的密钥ID Yes string 系统生成,在生成用户时获取
signature 签名结果串 Yes string 不校验,备用字段
signatureNonce 签名随机数 Yes int 1小时内,同一用户需使用不同数字

cURL example:

   curl --location --request DELETE '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/rules/{ruleId}?accessKeyId={accessKeyId}&signature={signature}&signatureNonce=646' \
 --header 'platform: 1' \
 --header 'projectId: {projectId}'

Response example:

{
  "success": true,
  "code": 0,
  "msg": null,
  "data": null
}

10.1.5查询符合条件的规则

功能描述:提供对规则的分页带条件查询功能,返回规则列表。

GET  /api/v1/rules

Query:

Name Type Description Required
accessKeyId string 用户访问服务所用的密钥ID,系统生成,在生成用户时获取 Yes
signature string 签名结果串,不校验,备用字段 Yes
signatureNonce int 签名随机数,1小时内,同一用户需使用不同数字 Yes
pageSize int 分页大小 Yes
currentPage int 页码 Yes
name string 规则名 No
type int 规则类型,1-云端 No

cURL example:

   curl --location --request GET '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/rules/{ruleId}?accessKeyId={accessKeyId}&signature={signature}&signatureNonce=646&currentPage={currentPage}&pageSize={pageSize}' \
 --header 'platform: 1' \
 --header 'projectId: {projectId}'

Response data:

Name Type Description
totalCount int 总数量
pageSize int 分页大小
currentPage int 页码
totalPage int 总页数
content struct[] 内容

Response data content的子对象结构体:

Name Type Description
id string 规则ID
name string 规则名称
userId string 用户ID
userName string 用户名称
timeTrigger string 时间触发器,支持cron表达式
conditions struct[] 触发器结构体数组
actions struct[] 执行设备信息结构体数组
subscription string[] 接收人邮箱列表
mailServerId string 邮箱服务器ID
mailServerName string 邮箱服务器名称
mailPatternId string 邮件模板ID
mailPatternName string 邮件模板名称
export boolean 是否推送到export client
exportClientId int 消息路由客户端ID
ruleType int 规则类型,1:云端
status enum 规则状态(0:禁用,1:启用)

Response data conditions的子对象结构体:

Name Type Description
type int 条件类型(1:数据点条件 2:设备上线 3:设备下线 4:设备删除)
productId int 触发产品ID
didList int[] 触发设备ID列表
productName string 触发产品名称
nameList string[] 触发设备名称列表
protocolType int 协议类型
check struct 触发器详情
labelId int 分组ID
labelName int 分组名

Response data check的子对象结构体:

Name Type Description
parameter string 触发设备属性名(定义功能时添加的属性名)
operation string 触发设备判定符号(目前支持:> ; >= ; == ; < ; <= ; !=)(注:string,bool,byte只支持 == 与 != )
operand 任意类型 阈值(bool值写成true或者false,int写成数字)
type int 条件类型(1:数据点条件 2:设备上线 3:设备下线 4:设备删除)

Response data actions的子对象结构体:

Name Type Description
productId int 执行产品ID
deviceId int 执行设备ID
identifier string 需执行的属性名(具有写权限的属性)
value 任意类型 值(bool值写成true或者false,int写成数字)
type int 条件类型(1:数据点条件 2:设备上线 3:设备下线 4:设备删除)
protocolType int 协议类型
deviceName string 执行设备名称
productName string 执行产品名称

Response example:

{
  "success": true,
  "code": 0,
  "msg": "",
  "data": {
    "currentPage": 1,
    "pageSize": 10,
    "totalCount": 1,
    "totalPage": 1,
    "content": [
                 {
                    "id": "8ae48daf7163309a0171ee0575150010",
                    "name": "string111",
                    "userId": "1bb9909ee93647df883b9043743a345d",
                    "userName": "liubo3",
                    "timeTrigger": null,
                    "conditions": [
                        {
                            "productName": "cdedd",
                            "productId": 100235,
                            "labelId": null,
                            "labelName": null,
                            "protocolType": 5,
                            "check": {
                                "parameter": "abcd",
                                "operation": "!=",
                                "operand": "true",
                                "type": 2
                            },
                            "type": 2,
                            "nameList": [
                                "crcr"
                            ],
                            "didList": [
                                10000781
                            ]
                        }
                    ],
                    "filters": [],
                    "actions": [
                        {
                            "deviceId": 10000781,
                            "deviceName": "crcr",
                            "productName": "cdedd",
                            "productId": 100235,
                            "protocolType": 5,
                            "identifier": "abcd",
                            "value": "true",
                            "type": 2
                        }
                    ],        
                    "subscription": [],
                    "mailServerId": "",
                    "mailServerName": "",
                    "mailPatternId": "",
                    "mailPatternName": "",           
                    "export": false,
                    "exportClientId": null,           
                    "ruleType": 1
                 }
               ]
           }
}

10.1.6启用规则

功能描述:启用物联网中的特定规则引擎,使规则引擎能够进行条件触发,执行相应的动作。

PUT  /api/v1/rules/{ruleId}/enable

Path:

Name Type Description Required
ruleId string 规则的ID Yes

cURL example:

   curl --location --request PUT '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/rules/{ruleId}/enable?accessKeyId={accessKeyId}&signature={signature}&signatureNonce=646' \
 --header 'platform: 1' \
 --header 'projectId: {projectId}'

Response example:

{
    "success": true,
    "code": 0,
    "msg": null,
    "data": null
}

10.1.7禁用规则

功能描述:禁用物联网中的特定规则,禁止规则进行条件触发,执行相应的动作。

PUT  /api/v1/rules/{ruleId}/disable

Path:

Name Type Description Required
ruleId string 规则的ID Yes

cURL example:

   curl --location --request PUT '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/rules/{ruleId}/disable?accessKeyId={accessKeyId}&signature={signature}&signatureNonce=646' \
 --header 'platform: 1' \
 --header 'projectId: {projectId}'

Response example:

{
    "success": true,
    "code": 0,
    "msg": null,
    "data": null
}

10.1.8批量删除规则

功能描述:根据id列表批量删除规则。

DELETE  /api/v1/rules

Body:

Name Type Description Required
idList string[] 规则ID数组 Yes

Body example:

["8ae48daf7163309a0171ee0575150010","9ae48daf7163309a0171ee0575150010"]

cURL example:

   curl --location --request DELETE '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/rules?accessKeyId={accessKeyId}&signature={signature}&signatureNonce=646' \
 --header 'platform: 1' \
 --header 'projectId: {projectId}' \
 --header 'Content-Type: application/json' \
 --data-raw '["8ae48daf7163309a0171ee0575150010","9ae48daf7163309a0171ee0575150010"]'

Response example:

{
    "success": true,
    "code": 0,
    "msg": "",
    "data": null
}

10.1.9更新规则状态

功能描述:批量启用/禁用规则。

POST  /api/v1/rules/status

Body:

Name Type Description Required
ruleName string 规则名称 No
ruleId string[] 规则ID数组 Yes
status enum 规则状态(0:禁用,1:启用) Yes

Body example:

{
  "ruleId": [
    "8ae48daf7163309a0171ee0575150010"
  ],
  "status": 1
}

cURL example:

   curl --location --request POST '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/rules/status?accessKeyId={accessKeyId}&signature={signature}&signatureNonce=646' \
 --header 'platform: 1' \
 --header 'projectId: {projectId}' \
 --header 'Content-Type: application/json' \
 --data-raw '{
  "ruleId": [
    "8ae48daf7163309a0171ee0575150010"
  ],
  "status": 1
}'

Response example:

{
    "success": true,
    "code": 0,
    "msg": null,
    "data": null
}

results matching ""

    No results matching ""